package com.yanxu.simplefactory;

import com.yanxu.domain.Video;
import com.yanxu.domain.VideoJava;
import com.yanxu.domain.VideoPython;

/**
 * @author 折戟沉沙铁未销
 * @version V1.0
 * @date 2025/3/12-2025
 * @Description: video 工厂
 */
public class VideoFactory {
    public static Video getVideo(String type){
        if("java".equals(type)){
            return new VideoJava();
        }
        else if("python".equals(type)){
            return new VideoPython();
        }
        //可能 后面又增加了 go 课程、php课程等。。
        //那么就需要在这个 方法里继续增加 if 判断，然后创建对象。---> 违背了 开闭原则。

        return null;
    }

    public static Video getVideo(Class<Video> clazz){
        try {
            Video video = (Video) Class.forName(clazz.getName()).newInstance();
            return video;
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}